package com.yanhui.utils.string;

import java.math.BigDecimal;

public class _mathUtils {
	/**
	 * 两个数字相加
	 * 
	 * @param num1 第一个加数
	 * @param num2 第二个加数
	 * @return 两个加数相加的和
	 */
	public static String add(String num1, String num2) {
		BigDecimal dec1 = new BigDecimal(num1);
		BigDecimal dec2 = new BigDecimal(num2);
		return dec1.add(dec2).toString();
	}
	
	public static String add(int num1, int num2) {
		BigDecimal dec1 = new BigDecimal(num1);
		BigDecimal dec2 = new BigDecimal(num2);
		return dec1.add(dec2).toString();
	}
	
	public static String add(Long num1, Long num2) {
		BigDecimal dec1 = new BigDecimal(num1);
		BigDecimal dec2 = new BigDecimal(num2);
		return dec1.add(dec2).toString();
	}
	
	public static String add(BigDecimal num1, BigDecimal num2) {
		return num1.add(num2).toString();
	}

	/**
	 * 两个数字想减
	 * 
	 * @param num1 被减数
	 * @param num2 减数
	 * @return 两个数想减的差
	 */
	public static String subtract(String num1, String num2) {
		BigDecimal dec1 = new BigDecimal(num1);
		BigDecimal dec2 = new BigDecimal(num2);
		return dec1.subtract(dec2).toString();
	}
	
	public static String subtract(int num1, int num2) {
		BigDecimal dec1 = new BigDecimal(num1);
		BigDecimal dec2 = new BigDecimal(num2);
		return dec1.subtract(dec2).toString();
	}
	
	public static String subtract(Long num1, Long num2) {
		BigDecimal dec1 = new BigDecimal(num1);
		BigDecimal dec2 = new BigDecimal(num2);
		return dec1.subtract(dec2).toString();
	}
	
	public static String subtract(BigDecimal num1, BigDecimal num2) {
		return num1.subtract(num2).toString();
	}

	/**
	 * 两个数相乘的积
	 * 
	 * @param num1 被乘数
	 * @param num2 乘数
	 * @return 两个数相乘的积
	 */
	public static String multiply(String num1, String num2) {
		BigDecimal dec1 = new BigDecimal(num1);
		BigDecimal dec2 = new BigDecimal(num2);
		return dec1.multiply(dec2).toString();
	}
	
	public static String multiply(int num1, int num2) {
		BigDecimal dec1 = new BigDecimal(num1);
		BigDecimal dec2 = new BigDecimal(num2);
		return dec1.multiply(dec2).toString();
	}
	
	public static String multiply(Long num1, Long num2) {
		BigDecimal dec1 = new BigDecimal(num1);
		BigDecimal dec2 = new BigDecimal(num2);
		return dec1.multiply(dec2).toString();
	}
	
	public static String multiply(BigDecimal num1, BigDecimal num2) {
		return num1.multiply(num2).toString();
	}

	/**
	 * 两个数相除
	 * 
	 * @param num1 被除数
	 * @param num2 除数
	 * @return 两个数相除的商,保留两位小数
	 */
	public static String divide(String num1, String num2) {
		return divide(num1, num2, 2);
	}
	public static String divide(int num1, int num2) {
		String num11 = num1+"";
		String num22 = num2+"";
		return divide(num11, num22, 2);
	}
	public static String divide(Long num1, Long num2) {
		String num11 = num1+"";
		String num22 = num2+"";
		return divide(num11, num22, 2);
	}
	public static String divide(BigDecimal num1, BigDecimal num2) {
		String num11 = num1+"";
		String num22 = num2+"";
		return divide(num11, num22, 2);
	}

	/**
	 * 两个数相除
	 * 
	 * @param num1 被除数
	 * @param num2 除数
	 * @param scale 商的小数位数
	 * @return 两个除数的商,保留若干位小数
	 */
	public static String divide(String num1, String num2, int scale) {
		BigDecimal dec1 = new BigDecimal(num1);
		BigDecimal dec2 = new BigDecimal(num2);
		return dec1.divide(dec2, scale, BigDecimal.ROUND_HALF_UP).toString();
	}

	/**
	 * 求相反数
	 * 
	 * @param num 原始数值
	 * @return 该数值的相反数
	 */
	public static String negate(String num) {
		return new BigDecimal(num).negate().toString();
	}
	public static String negate(int num) {
		return new BigDecimal(num).negate().toString();
	}
	public static String negate(Long num) {
		return new BigDecimal(num).negate().toString();
	}
	public static String negate(BigDecimal num) {
		return num.negate().toString();
	}
	
	public static void main(String[] args) {
		String a = _mathUtils.negate("900");
		System.out.println(a);
	}
}
